/*
 * armarAlf()
 * Lee x cantidad de caracteres del archivo a comprimir
 * y determina el alfabeto a utilizar, que devuelve en
 * la variable de clase Alfabeto
 * 
 * 
 * recuperarAlf()
 * Lee desde el archivo comprimido cual es el alfabeto
 * a utilizar y lo carga en la variable de clase.
 *  
 */

#include <iostream>
#include "preprocesamiento.h"
#include "Alfabeto.h"
#include "mtfM.h"

#define CHARS_A_PREPROCESAR 5024
//#define TAMANIO 255 (moví la definicion a preporcesamiento.h)

using namespace std;


int stringComp2(const void* dato1, const void* dato2){
    vFrecuencias_t s1 = *(vFrecuencias_t*) dato1;
    vFrecuencias_t s2 = *(vFrecuencias_t*) dato2;

    if(s1.frec>s2.frec) return 1; 
    if(s1.frec<s2.frec) return -1; 
    
    if(s1.ch>s2.ch) return 1; 
    if(s1.ch<s2.ch) return -1; 
    
    return 0;
    
}

int cargarFrecuencias (unsigned char* cadena, vFrecuencias_t* vectorF){
    
    
    //Inicializo el vector de frecuencias
    for(int i = 0; i <= TAMANIO; i++){
        vectorF[i].ch = (unsigned char)i;
        vectorF[i].frec = 0;
    }
    
    for(int i = 0; i < CHARS_A_PREPROCESAR; i++){        
        vectorF[cadena[i]].frec ++;
    }
    
    
    return 0;
}


short armarAlf(istream &archivo_a_comprimir, Alfabeto& alf,unsigned char * alfEnCadena){
    
    unsigned char cant = 0;
    unsigned char cadena[CHARS_A_PREPROCESAR];
    vFrecuencias_t vectorFrecuencias[TAMANIO+1];    
    int i = 0;
    
    archivo_a_comprimir.read((char*)cadena,sizeof(char)*CHARS_A_PREPROCESAR);
    
    if (archivo_a_comprimir.eof()){
        //armar alfabeto default si el archivo es mas chico que el bloque
        
                alfEnCadena[0] = 32 ; //  (espacio) 
                alfEnCadena[1] = 101 ; // e 
                alfEnCadena[2] = 116 ; // t 
                alfEnCadena[3] = 105 ; // i 
                alfEnCadena[4] = 110 ; // n 
                alfEnCadena[5] = 111 ; // o 
                alfEnCadena[6] = 97 ; // a 
                alfEnCadena[7] = 115 ; // s 
                alfEnCadena[8] = 114 ; // r 
                alfEnCadena[9] = 99 ; // c 
                alfEnCadena[10] = 100 ; // d 
                alfEnCadena[11] = 109 ; // m 
                alfEnCadena[12] = 112 ; // p 
                alfEnCadena[13] = 10 ; // 
                alfEnCadena[14] = 104 ; // h 
                alfEnCadena[15] = 108 ; // l 
                alfEnCadena[16] = 102 ; // f 
                alfEnCadena[17] = 46 ; // . 
                alfEnCadena[18] = 117 ; // u 
                alfEnCadena[19] = 48 ; // 0 
                alfEnCadena[20] = 98 ; // b 
                alfEnCadena[21] = 103 ; // g 
                alfEnCadena[22] = 121 ; // y 
                alfEnCadena[23] = 73 ; // I 
                alfEnCadena[24] = 44 ; // , 
                alfEnCadena[25] = 119 ; // w 
                alfEnCadena[26] = 49 ; // 1 
                alfEnCadena[27] = 118 ; // v 
                alfEnCadena[28] = 92 ; // \ 
                alfEnCadena[29] = 84 ; // T 
                alfEnCadena[30] = 53 ; // 5 
                alfEnCadena[31] = 67 ; // C 
                alfEnCadena[32] = 120 ; // x 
                alfEnCadena[33] = 52 ; // 4 
                alfEnCadena[34] = 45 ; // - 
                alfEnCadena[35] = 82 ; // R 
                alfEnCadena[36] = 50 ; // 2 
                alfEnCadena[37] = 65 ; // A 
                alfEnCadena[38] = 72 ; // H 
                alfEnCadena[39] = 55 ; // 7 
                alfEnCadena[40] = 78 ; // N 
                alfEnCadena[41] = 113 ; // q 
                alfEnCadena[42] = 83 ; // S 
                alfEnCadena[43] = 68 ; // D 
                alfEnCadena[44] = 51 ; // 3 
                alfEnCadena[45] = 57 ; // 9 
                alfEnCadena[46] = 69 ; // E 
                alfEnCadena[47] = 56 ; // 8 
                alfEnCadena[48] = 40 ; // ( 
                alfEnCadena[49] = 107 ; // k 
                alfEnCadena[50] = 93 ; // ] 
                alfEnCadena[51] = 91 ; // [ 
                alfEnCadena[52] = 79 ; // O 
                alfEnCadena[53] = 77 ; // M 
                alfEnCadena[54] = 70 ; // F 
                alfEnCadena[55] = 54 ; // 6 
                alfEnCadena[56] = 43 ; // + 
                alfEnCadena[57] = 34 ; // " 
                alfEnCadena[58] = 87 ; // W 
                alfEnCadena[59] = 71 ; // G 
                alfEnCadena[60] = 58 ; // : 
                alfEnCadena[61] = 41 ; // ) 
                alfEnCadena[62] = 106 ; // j 
                alfEnCadena[63] = 85 ; // U 
                alfEnCadena[64] = 80 ; // P 
                alfEnCadena[65] = 74 ; // J 
                alfEnCadena[66] = 47 ; // / 
                alfEnCadena[67] = 36 ; // $ 
                alfEnCadena[68] = 89 ; // Y 
                alfEnCadena[69] = 81 ; // Q 
                alfEnCadena[70] = 59 ; // ; 
                alfEnCadena[71] = 38 ; // & 
                alfEnCadena[72] = 122 ; // z
                alfEnCadena[73] = 96 ; // ` 
                alfEnCadena[74] = 95 ; // _ 
                alfEnCadena[75] = 94 ; // ^
                alfEnCadena[76] = 90 ; // Z 
                alfEnCadena[77] = 88 ; // X
                alfEnCadena[78] = 86 ; // V
                alfEnCadena[79] = 76 ; // L
                alfEnCadena[80] = 75 ; // K 
                alfEnCadena[81] = 66 ; // B
                alfEnCadena[82] = 64 ; // @
                alfEnCadena[83] = 63 ; // ?
                alfEnCadena[84] = 62 ; // > 
                alfEnCadena[85] = 61 ; // =
                alfEnCadena[86] = 60 ; // <
                alfEnCadena[87] = 42 ; // *  
                alfEnCadena[88] = 39 ; // '
                alfEnCadena[89] = 37 ; // %
                alfEnCadena[90] = 35 ; // #
                alfEnCadena[91] = 33 ; // ! 
                alfEnCadena[92] = 31 ; // 
                alfEnCadena[93] = 126 ; // ~ 
                alfEnCadena[94] = 125 ; // } 
                alfEnCadena[95] = 124 ; // |
                alfEnCadena[96] = 123 ; // { 
                alfEnCadena[97] = 230 ; // � 
                alfEnCadena[98] = 229 ; // � 
                alfEnCadena[99] = 228 ; // � 
                alfEnCadena[100] = 227 ; // � 
                alfEnCadena[101] = 226 ; // � 
                alfEnCadena[102] = 225 ; // � 
                alfEnCadena[103] = 224 ; // � 
                alfEnCadena[104] = 223 ; // � 
                alfEnCadena[105] = 222 ; // � 
                alfEnCadena[106] = 221 ; // � 
                alfEnCadena[107] = 220 ; // � 
                alfEnCadena[108] = 219 ; // � 
                alfEnCadena[109] = 218 ; // � 
                alfEnCadena[110] = 217 ; // � 
                alfEnCadena[111] = 216 ; // � 
                alfEnCadena[112] = 215 ; // � 
                alfEnCadena[113] = 214 ; // � 
                alfEnCadena[114] = 213 ; // � 
                alfEnCadena[115] = 212 ; // � 
                alfEnCadena[116] = 211 ; // � 
                alfEnCadena[117] = 210 ; // � 
                alfEnCadena[118] = 209 ; // � 
                alfEnCadena[119] = 208 ; // � 
                alfEnCadena[120] = 207 ; // � 
                alfEnCadena[121] = 206 ; // � 
                alfEnCadena[122] = 205 ; // � 
                alfEnCadena[123] = 204 ; // � 
                alfEnCadena[124] = 203 ; // � 
                alfEnCadena[125] = 202 ; // � 
                alfEnCadena[126] = 201 ; // � 
                alfEnCadena[127] = 200 ; // � 
                alfEnCadena[128] = 199 ; // � 
                alfEnCadena[129] = 198 ; // � 
                alfEnCadena[130] = 197 ; // � 
                alfEnCadena[131] = 196 ; // � 
                alfEnCadena[132] = 195 ; // � 
                alfEnCadena[133] = 194 ; // � 
                alfEnCadena[134] = 193 ; // � 
                alfEnCadena[135] = 192 ; // � 
                alfEnCadena[136] = 191 ; // � 
                alfEnCadena[137] = 190 ; // � 
                alfEnCadena[138] = 189 ; // � 
                alfEnCadena[139] = 188 ; // � 
                alfEnCadena[140] = 187 ; // � 
                alfEnCadena[141] = 186 ; // � 
                alfEnCadena[142] = 185 ; // � 
                alfEnCadena[143] = 184 ; // � 
                alfEnCadena[144] = 183 ; // � 
                alfEnCadena[145] = 182 ; // � 
                alfEnCadena[146] = 181 ; // � 
                alfEnCadena[147] = 180 ; // � 
                alfEnCadena[148] = 179 ; // � 
                alfEnCadena[149] = 178 ; // � 
                alfEnCadena[150] = 177 ; // � 
                alfEnCadena[151] = 176 ; // � 
                alfEnCadena[152] = 175 ; // � 
                alfEnCadena[153] = 174 ; // � 
                alfEnCadena[154] = 173 ; // � 
                alfEnCadena[155] = 172 ; // � 
                alfEnCadena[156] = 171 ; // � 
                alfEnCadena[157] = 170 ; // � 
                alfEnCadena[158] = 169 ; // � 
                alfEnCadena[159] = 168 ; // � 
                alfEnCadena[160] = 167 ; // � 
                alfEnCadena[161] = 166 ; // � 
                alfEnCadena[162] = 165 ; // � 
                alfEnCadena[163] = 164 ; // � 
                alfEnCadena[164] = 163 ; // � 
                alfEnCadena[165] = 162 ; // � 
                alfEnCadena[166] = 161 ; // � 
                alfEnCadena[167] = 160 ; // � 
                alfEnCadena[168] = 159 ; // � 
                alfEnCadena[169] = 158 ; // � 
                alfEnCadena[170] = 157 ; // � 
                alfEnCadena[171] = 156 ; // � 
                alfEnCadena[172] = 155 ; // � 
                alfEnCadena[173] = 154 ; // � 
                alfEnCadena[174] = 153 ; // � 
                alfEnCadena[175] = 152 ; // � 
                alfEnCadena[176] = 151 ; // � 
                alfEnCadena[177] = 150 ; // � 
                alfEnCadena[178] = 149 ; // � 
                alfEnCadena[179] = 148 ; // � 
                alfEnCadena[180] = 147 ; // � 
                alfEnCadena[181] = 146 ; // � 
                alfEnCadena[182] = 145 ; // � 
                alfEnCadena[183] = 144 ; // � 
                alfEnCadena[184] = 143 ; // � 
                alfEnCadena[185] = 142 ; // � 
                alfEnCadena[186] = 141 ; // � 
                alfEnCadena[187] = 140 ; // � 
                alfEnCadena[188] = 139 ; // � 
                alfEnCadena[189] = 138 ; // � 
                alfEnCadena[190] = 137 ; // � 
                alfEnCadena[191] = 136 ; // � 
                alfEnCadena[192] = 135 ; // � 
                alfEnCadena[193] = 134 ; // � 
                alfEnCadena[194] = 133 ; // � 
                alfEnCadena[195] = 132 ; // � 
                alfEnCadena[196] = 131 ; // � 
                alfEnCadena[197] = 130 ; // � 
                alfEnCadena[198] = 129 ; // � 
                alfEnCadena[199] = 128 ; // � 
                alfEnCadena[200] = 127 ; //  
                alfEnCadena[201] = 234 ; // �
                alfEnCadena[202] = 233 ; // �
                alfEnCadena[203] = 232 ; // � 
                alfEnCadena[204] = 231 ; // �
                alfEnCadena[205] = 255 ; // � 
                alfEnCadena[206] = 254 ; // �
                alfEnCadena[207] = 253 ; // � 
                alfEnCadena[208] = 252 ; // � 
                alfEnCadena[209] = 251 ; // �
                alfEnCadena[210] = 250 ; // �
                alfEnCadena[211] = 249 ; // �
                alfEnCadena[212] = 248 ; // � 
                alfEnCadena[213] = 247 ; // �
                alfEnCadena[214] = 246 ; // �
                alfEnCadena[215] = 245 ; // �
                alfEnCadena[216] = 244 ; // � 
                alfEnCadena[217] = 243 ; // �
                alfEnCadena[218] = 242 ; // �
                alfEnCadena[219] = 241 ; // �
                alfEnCadena[220] = 240 ; // �
                alfEnCadena[221] = 239 ; // �
                alfEnCadena[222] = 238 ; // �
                alfEnCadena[223] = 237 ; // �
                alfEnCadena[224] = 236 ; // �
                alfEnCadena[225] = 235 ; // �
                alfEnCadena[226] = 30 ; //  
                alfEnCadena[227] = 29 ; //  
                alfEnCadena[228] = 28 ; //  
                alfEnCadena[229] = 27 ; // 
                alfEnCadena[230] = 26 ; //  
                alfEnCadena[231] = 25 ; //  
                alfEnCadena[232] = 24 ; //  
                alfEnCadena[233] = 23 ; //  
                alfEnCadena[234] = 22 ; //  
                alfEnCadena[235] = 21 ; //  
                alfEnCadena[236] = 20 ; //  
                alfEnCadena[237] = 19 ; //  
                alfEnCadena[238] = 18 ; //  
                alfEnCadena[239] = 17 ; //  
                alfEnCadena[240] = 16 ; //  
                alfEnCadena[241] = 15 ; //  
                alfEnCadena[242] = 14 ; //  
                alfEnCadena[243] = 13 ; // 
                alfEnCadena[244] = 12 ; //  
                alfEnCadena[245] = 11 ; //  
                alfEnCadena[246] = 9 ; //        
                alfEnCadena[247] = 8 ; // 
                alfEnCadena[248] = 7 ; //  
                alfEnCadena[249] = 6 ; //  
                alfEnCadena[250] = 5 ; //  
                alfEnCadena[251] = 4 ; //  
                alfEnCadena[252] = 3 ; //  
                alfEnCadena[253] = 2 ; //  
                alfEnCadena[254] = 1 ; //  
                alfEnCadena[255] = 0 ; //  

            
            alf.reordenar_segun_string(alfEnCadena,TAMANIO);

        return 0;
    }
    
    
    cargarFrecuencias (cadena, vectorFrecuencias);
    qsort(vectorFrecuencias, TAMANIO+1, sizeof(vFrecuencias_t), stringComp2);
    
    int j=TAMANIO;
    
    for (i=0;i<=TAMANIO;i++){
        alfEnCadena[i] = vectorFrecuencias[j].ch;  
        j--;
    }        
    
    
    alf.reordenar_segun_string(alfEnCadena,TAMANIO);
    
    
    return TAMANIO+1;
}

int recuperarAlf(istream &archivo_comprimido, Alfabeto& alf){
    
    //leo el primer byte del archivo que me dice que alfabeto usar
    // 0: default
    // x entr 1-255: leer x caracteres
    
    short cant = 0; //cantidad de char guardados del alfabeto
    unsigned char *alfEnCadena; //va a contener la cadena de chars
    
    
    archivo_comprimido.read((char*)&cant,sizeof(short));
        
    if(cant==0){
        
        //armar alfabeto default
            
                alfEnCadena = new unsigned char[TAMANIO+1];
        
                alfEnCadena[0] = 32 ; //  (espacio) 
                alfEnCadena[1] = 101 ; // e 
                alfEnCadena[2] = 116 ; // t 
                alfEnCadena[3] = 105 ; // i 
                alfEnCadena[4] = 110 ; // n 
                alfEnCadena[5] = 111 ; // o 
                alfEnCadena[6] = 97 ; // a 
                alfEnCadena[7] = 115 ; // s 
                alfEnCadena[8] = 114 ; // r 
                alfEnCadena[9] = 99 ; // c 
                alfEnCadena[10] = 100 ; // d 
                alfEnCadena[11] = 109 ; // m 
                alfEnCadena[12] = 112 ; // p 
                alfEnCadena[13] = 10 ; // 
                alfEnCadena[14] = 104 ; // h 
                alfEnCadena[15] = 108 ; // l 
                alfEnCadena[16] = 102 ; // f 
                alfEnCadena[17] = 46 ; // . 
                alfEnCadena[18] = 117 ; // u 
                alfEnCadena[19] = 48 ; // 0 
                alfEnCadena[20] = 98 ; // b 
                alfEnCadena[21] = 103 ; // g 
                alfEnCadena[22] = 121 ; // y 
                alfEnCadena[23] = 73 ; // I 
                alfEnCadena[24] = 44 ; // , 
                alfEnCadena[25] = 119 ; // w 
                alfEnCadena[26] = 49 ; // 1 
                alfEnCadena[27] = 118 ; // v 
                alfEnCadena[28] = 92 ; // \ 
                alfEnCadena[29] = 84 ; // T 
                alfEnCadena[30] = 53 ; // 5 
                alfEnCadena[31] = 67 ; // C 
                alfEnCadena[32] = 120 ; // x 
                alfEnCadena[33] = 52 ; // 4 
                alfEnCadena[34] = 45 ; // - 
                alfEnCadena[35] = 82 ; // R 
                alfEnCadena[36] = 50 ; // 2 
                alfEnCadena[37] = 65 ; // A 
                alfEnCadena[38] = 72 ; // H 
                alfEnCadena[39] = 55 ; // 7 
                alfEnCadena[40] = 78 ; // N 
                alfEnCadena[41] = 113 ; // q 
                alfEnCadena[42] = 83 ; // S 
                alfEnCadena[43] = 68 ; // D 
                alfEnCadena[44] = 51 ; // 3 
                alfEnCadena[45] = 57 ; // 9 
                alfEnCadena[46] = 69 ; // E 
                alfEnCadena[47] = 56 ; // 8 
                alfEnCadena[48] = 40 ; // ( 
                alfEnCadena[49] = 107 ; // k 
                alfEnCadena[50] = 93 ; // ] 
                alfEnCadena[51] = 91 ; // [ 
                alfEnCadena[52] = 79 ; // O 
                alfEnCadena[53] = 77 ; // M 
                alfEnCadena[54] = 70 ; // F 
                alfEnCadena[55] = 54 ; // 6 
                alfEnCadena[56] = 43 ; // + 
                alfEnCadena[57] = 34 ; // " 
                alfEnCadena[58] = 87 ; // W 
                alfEnCadena[59] = 71 ; // G 
                alfEnCadena[60] = 58 ; // : 
                alfEnCadena[61] = 41 ; // ) 
                alfEnCadena[62] = 106 ; // j 
                alfEnCadena[63] = 85 ; // U 
                alfEnCadena[64] = 80 ; // P 
                alfEnCadena[65] = 74 ; // J 
                alfEnCadena[66] = 47 ; // / 
                alfEnCadena[67] = 36 ; // $ 
                alfEnCadena[68] = 89 ; // Y 
                alfEnCadena[69] = 81 ; // Q 
                alfEnCadena[70] = 59 ; // ; 
                alfEnCadena[71] = 38 ; // & 
                alfEnCadena[72] = 122 ; // z
                alfEnCadena[73] = 96 ; // ` 
                alfEnCadena[74] = 95 ; // _ 
                alfEnCadena[75] = 94 ; // ^
                alfEnCadena[76] = 90 ; // Z 
                alfEnCadena[77] = 88 ; // X
                alfEnCadena[78] = 86 ; // V
                alfEnCadena[79] = 76 ; // L
                alfEnCadena[80] = 75 ; // K 
                alfEnCadena[81] = 66 ; // B
                alfEnCadena[82] = 64 ; // @
                alfEnCadena[83] = 63 ; // ?
                alfEnCadena[84] = 62 ; // > 
                alfEnCadena[85] = 61 ; // =
                alfEnCadena[86] = 60 ; // <
                alfEnCadena[87] = 42 ; // *  
                alfEnCadena[88] = 39 ; // '
                alfEnCadena[89] = 37 ; // %
                alfEnCadena[90] = 35 ; // #
                alfEnCadena[91] = 33 ; // ! 
                alfEnCadena[92] = 31 ; // 
                alfEnCadena[93] = 126 ; // ~ 
                alfEnCadena[94] = 125 ; // } 
                alfEnCadena[95] = 124 ; // |
                alfEnCadena[96] = 123 ; // { 
                alfEnCadena[97] = 230 ; // � 
                alfEnCadena[98] = 229 ; // � 
                alfEnCadena[99] = 228 ; // � 
                alfEnCadena[100] = 227 ; // � 
                alfEnCadena[101] = 226 ; // � 
                alfEnCadena[102] = 225 ; // � 
                alfEnCadena[103] = 224 ; // � 
                alfEnCadena[104] = 223 ; // � 
                alfEnCadena[105] = 222 ; // � 
                alfEnCadena[106] = 221 ; // � 
                alfEnCadena[107] = 220 ; // � 
                alfEnCadena[108] = 219 ; // � 
                alfEnCadena[109] = 218 ; // � 
                alfEnCadena[110] = 217 ; // � 
                alfEnCadena[111] = 216 ; // � 
                alfEnCadena[112] = 215 ; // � 
                alfEnCadena[113] = 214 ; // � 
                alfEnCadena[114] = 213 ; // � 
                alfEnCadena[115] = 212 ; // � 
                alfEnCadena[116] = 211 ; // � 
                alfEnCadena[117] = 210 ; // � 
                alfEnCadena[118] = 209 ; // � 
                alfEnCadena[119] = 208 ; // � 
                alfEnCadena[120] = 207 ; // � 
                alfEnCadena[121] = 206 ; // � 
                alfEnCadena[122] = 205 ; // � 
                alfEnCadena[123] = 204 ; // � 
                alfEnCadena[124] = 203 ; // � 
                alfEnCadena[125] = 202 ; // � 
                alfEnCadena[126] = 201 ; // � 
                alfEnCadena[127] = 200 ; // � 
                alfEnCadena[128] = 199 ; // � 
                alfEnCadena[129] = 198 ; // � 
                alfEnCadena[130] = 197 ; // � 
                alfEnCadena[131] = 196 ; // � 
                alfEnCadena[132] = 195 ; // � 
                alfEnCadena[133] = 194 ; // � 
                alfEnCadena[134] = 193 ; // � 
                alfEnCadena[135] = 192 ; // � 
                alfEnCadena[136] = 191 ; // � 
                alfEnCadena[137] = 190 ; // � 
                alfEnCadena[138] = 189 ; // � 
                alfEnCadena[139] = 188 ; // � 
                alfEnCadena[140] = 187 ; // � 
                alfEnCadena[141] = 186 ; // � 
                alfEnCadena[142] = 185 ; // � 
                alfEnCadena[143] = 184 ; // � 
                alfEnCadena[144] = 183 ; // � 
                alfEnCadena[145] = 182 ; // � 
                alfEnCadena[146] = 181 ; // � 
                alfEnCadena[147] = 180 ; // � 
                alfEnCadena[148] = 179 ; // � 
                alfEnCadena[149] = 178 ; // � 
                alfEnCadena[150] = 177 ; // � 
                alfEnCadena[151] = 176 ; // � 
                alfEnCadena[152] = 175 ; // � 
                alfEnCadena[153] = 174 ; // � 
                alfEnCadena[154] = 173 ; // � 
                alfEnCadena[155] = 172 ; // � 
                alfEnCadena[156] = 171 ; // � 
                alfEnCadena[157] = 170 ; // � 
                alfEnCadena[158] = 169 ; // � 
                alfEnCadena[159] = 168 ; // � 
                alfEnCadena[160] = 167 ; // � 
                alfEnCadena[161] = 166 ; // � 
                alfEnCadena[162] = 165 ; // � 
                alfEnCadena[163] = 164 ; // � 
                alfEnCadena[164] = 163 ; // � 
                alfEnCadena[165] = 162 ; // � 
                alfEnCadena[166] = 161 ; // � 
                alfEnCadena[167] = 160 ; // � 
                alfEnCadena[168] = 159 ; // � 
                alfEnCadena[169] = 158 ; // � 
                alfEnCadena[170] = 157 ; // � 
                alfEnCadena[171] = 156 ; // � 
                alfEnCadena[172] = 155 ; // � 
                alfEnCadena[173] = 154 ; // � 
                alfEnCadena[174] = 153 ; // � 
                alfEnCadena[175] = 152 ; // � 
                alfEnCadena[176] = 151 ; // � 
                alfEnCadena[177] = 150 ; // � 
                alfEnCadena[178] = 149 ; // � 
                alfEnCadena[179] = 148 ; // � 
                alfEnCadena[180] = 147 ; // � 
                alfEnCadena[181] = 146 ; // � 
                alfEnCadena[182] = 145 ; // � 
                alfEnCadena[183] = 144 ; // � 
                alfEnCadena[184] = 143 ; // � 
                alfEnCadena[185] = 142 ; // � 
                alfEnCadena[186] = 141 ; // � 
                alfEnCadena[187] = 140 ; // � 
                alfEnCadena[188] = 139 ; // � 
                alfEnCadena[189] = 138 ; // � 
                alfEnCadena[190] = 137 ; // � 
                alfEnCadena[191] = 136 ; // � 
                alfEnCadena[192] = 135 ; // � 
                alfEnCadena[193] = 134 ; // � 
                alfEnCadena[194] = 133 ; // � 
                alfEnCadena[195] = 132 ; // � 
                alfEnCadena[196] = 131 ; // � 
                alfEnCadena[197] = 130 ; // � 
                alfEnCadena[198] = 129 ; // � 
                alfEnCadena[199] = 128 ; // � 
                alfEnCadena[200] = 127 ; //  
                alfEnCadena[201] = 234 ; // �
                alfEnCadena[202] = 233 ; // �
                alfEnCadena[203] = 232 ; // � 
                alfEnCadena[204] = 231 ; // �
                alfEnCadena[205] = 255 ; // � 
                alfEnCadena[206] = 254 ; // �
                alfEnCadena[207] = 253 ; // � 
                alfEnCadena[208] = 252 ; // � 
                alfEnCadena[209] = 251 ; // �
                alfEnCadena[210] = 250 ; // �
                alfEnCadena[211] = 249 ; // �
                alfEnCadena[212] = 248 ; // � 
                alfEnCadena[213] = 247 ; // �
                alfEnCadena[214] = 246 ; // �
                alfEnCadena[215] = 245 ; // �
                alfEnCadena[216] = 244 ; // � 
                alfEnCadena[217] = 243 ; // �
                alfEnCadena[218] = 242 ; // �
                alfEnCadena[219] = 241 ; // �
                alfEnCadena[220] = 240 ; // �
                alfEnCadena[221] = 239 ; // �
                alfEnCadena[222] = 238 ; // �
                alfEnCadena[223] = 237 ; // �
                alfEnCadena[224] = 236 ; // �
                alfEnCadena[225] = 235 ; // �
                alfEnCadena[226] = 30 ; //  
                alfEnCadena[227] = 29 ; //  
                alfEnCadena[228] = 28 ; //  
                alfEnCadena[229] = 27 ; // 
                alfEnCadena[230] = 26 ; //  
                alfEnCadena[231] = 25 ; //  
                alfEnCadena[232] = 24 ; //  
                alfEnCadena[233] = 23 ; //  
                alfEnCadena[234] = 22 ; //  
                alfEnCadena[235] = 21 ; //  
                alfEnCadena[236] = 20 ; //  
                alfEnCadena[237] = 19 ; //  
                alfEnCadena[238] = 18 ; //  
                alfEnCadena[239] = 17 ; //  
                alfEnCadena[240] = 16 ; //  
                alfEnCadena[241] = 15 ; //  
                alfEnCadena[242] = 14 ; //  
                alfEnCadena[243] = 13 ; // 
                alfEnCadena[244] = 12 ; //  
                alfEnCadena[245] = 11 ; //  
                alfEnCadena[246] = 9 ; //        
                alfEnCadena[247] = 8 ; // 
                alfEnCadena[248] = 7 ; //  
                alfEnCadena[249] = 6 ; //  
                alfEnCadena[250] = 5 ; //  
                alfEnCadena[251] = 4 ; //  
                alfEnCadena[252] = 3 ; //  
                alfEnCadena[253] = 2 ; //  
                alfEnCadena[254] = 1 ; //  
                alfEnCadena[255] = 0 ; //  
            
            alf.reordenar_segun_string(alfEnCadena,TAMANIO);
            
            delete[] alfEnCadena;
                    
        return 1;
    }    
    
    alfEnCadena = new unsigned char[cant+1];
    
    short i =0;
    for (i=0; i<cant;i++ ){
    archivo_comprimido.read((char*)&alfEnCadena[i],sizeof(unsigned char));
    }
    
    alf.reordenar_segun_string(alfEnCadena,cant-1);
            
    delete[] alfEnCadena;
   
    return 0;
}
